/*
 * @Author: pjji
 * @describe: 状态管理
 * @LastEditTime: 2022-02-11 10:40:28
 */
import Vue from 'vue'
import Vuex from 'vuex'
import axios from '@/common/api/api';
import menuData from './sildeMenuData'; //菜单导航模拟数据
// console.log(menuData);
Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        menuData: menuData || [], //菜单导航模拟数据
        // menuData: [], //导航菜单数据
        userInfo: {},
        userGroup: {},
        ajaxPendingNum: 0,
        type: '1'
    },
    mutations: {
        sendAjaxSetNum(state, flag) {
            if (flag == 'send') {
                state.ajaxPendingNum++;
            } else {
                state.ajaxPendingNum--;
            }
        },
        updateUserInfo(state, user) {
            state.userInfo = user;
        },
        updateNavMenuData(state, menu) {
            state.menuData = menu;
        },
      
        updateType(state, type) {
            state.type = type
        }
    },
    actions: {
        // 登录
        getUserInfo({
            commit
        }) {
            return new Promise((resolve, reject) => {
                axios({
                    // url: '/common/currentUserInfo',
                    url: '/mock/currentUserInfo',
                    method: 'get'
                }).then(res => {
                    console.log(res)
                    if (res.flag && res.data ) {
                        commit('updateUserInfo', res.data);
                        resolve(res);
                    } else {
                        reject(res);
                    }
                }).catch(err => {
                    reject(err);
                });
            });
        },
        // 导航菜单
        getNavMenuData({
            commit
        }) {
            setTimeout(() => {
                commit('updateNavMenuData', menuData);   // TODO: 仅测试用
            }, 500);
            // return new Promise((resolve, reject) => {
            //     axios({
            //         url: '/common/getCurrentNavigationVo',
            //         method: 'post'
            //     }).then(res => {
            //         if (res.flag && res.data) {
            //             commit('updateNavMenuData', res.data.items);
            //             resolve(res);
            //         } else {
            //             reject(res);
            //         }
            //     }).catch(err => {
            //         reject(err);
            //     });
            // });
        },
        // 登出
        logOut({state}) {
            Vue.prototype.$confirm('确认退出系统吗？', '消息', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                window.location.href = state.userInfo.logoutUrl
            }).catch(() => {});
        }
    }
})